/**
 * Copyright (c) 2017-2024 Nop Platform. All rights reserved.
 * Author: canonical_entropy@163.com
 * Blog:   https://www.zhihu.com/people/canonical-entropy
 * Gitee:  https://gitee.com/canonical-entropy/nop-entropy
 * Github: https://github.com/entropy-cloud/nop-entropy
 */
package com.gitee.wsl.struct.table

import com.gitee.wsl.api.IFreezable


interface IRow : IRowView{

    override var table: ITableView?

    override val cells: MutableList<ICell?>

    override fun getCell(colIndex: Int): ICell?

    override fun getRealCell(colIndex: Int): ICell? {
        val cell: ICell? = getCell(colIndex)
        if (cell == null || cell.isProxyCell) return null
        return cell
    }

    fun makeCell(colIndex: Int): ICell?

    fun checkAllowChange() {
        IFreezable.checkNotFrozen(this)
    }

    /**
     * 内部函数，不应该由应用代码调用。它没有处理合并单元格情况
     */
    fun internalSetCell(colIndex: Int, cell: ICell?)

    /**
     * 直接删除指定位置处的单元格。没有处理合并单元格情况
     */
    fun internalRemoveCell(colIndex: Int)

    /**
     * 插入一列，将后续列向后移动。
     */
    fun internalInsertCell(colIndex: Int, cell: ICell?)

    fun internalAddCell(cell: ICell)

    fun internalAddCells(cells: Collection<ICell>)
}